package c07运行环境与常用类;

import java.util.regex.*;

public class 正则表达式之Pattern和Matcher {
	public static void main(String[] args) {
		//创建一个Pattern对象，并用它建立一个Matcher对象
		String regStr = "Java is very easy!";//目标字符串
		String pstr = "\\w+";
		Pattern p = Pattern.compile(pstr);//如果只需匹配一次，可以：Pattern.matches("\\w+", regStr);
		Matcher m = p.matcher(regStr);//多个m之间可以共享一个p
		while (m.find())//依次找出匹配的串，下次再调用时将接着向下匹配
		{
			System.err.println(m.group()//返回上次find匹配到的串
					+ "子串的起始位置：" +
					m.start()//子串在目标串中的开始位置
					+ "，其结束位置：" + m.end()//子串在目标串中的结束位置+1
			);
		}
		int i = 0;
		while (m.find(i))//从i处开始向下匹配
		{
			System.err.print(m.group() + "\t");
			i++;
		}

		System.err.println();
		//以下方法String里都有
		System.err.println(m.replaceFirst("w"));//替换方法都是Matcher的！
		System.err.println(m.replaceAll("w"));//替换方法都是Matcher的！
		for (String s : p.split(regStr)) {//分解方法是Pattern的！
			System.err.print(s + ",");
		}

		System.err.println();
		System.err.println(m.lookingAt());//只需目标串前面有匹配的就返回true！
		System.err.println(m.matches());//必须整个目标串都与表达式匹配才返回true！
		m.reset("Java_is_very_easy");//重新设置目标串
		System.err.println(m.matches());//必须整个目标串都与表达式匹配才返回true！
	}
}

